SPB Git forge

spb/hilmacorp

Public
1commits 1branches 0releases
29.2 MBsize
maindefault branch
20 days agolast push
TypeScript 93.3% JavaScript 4.4% CSS 2.3%
2.8 KB · 80 lines tsx
Raw Blame History
1/**2 * Author: Simon-Pierre Boucher3 * Contact: contact@spboucher.ai4 * Project: Hilmacorp.ai — Web Platform5 * File: app/[locale]/security/page.tsx6 * Description: Security & responsible deployment page — governance controls and practices7 */89import type { Metadata } from "next";10import Container from "@/components/Container";11import SectionHeading from "@/components/SectionHeading";12import { getMessages, isLocale, type Locale } from "@/lib/i18n";1314export async function generateMetadata({15  params,16}: {17  params: Promise<{ locale: string }>;18}): Promise<Metadata> {19  const { locale } = await params;20  if (!isLocale(locale)) return {};21  const { meta } = getMessages(locale);22  return { title: { absolute: meta.security.title }, description: meta.security.description };23}2425export default async function SecurityPage({26  params,27}: {28  params: Promise<{ locale: string }>;29}) {30  const { locale } = await params;31  const { security } = getMessages(locale as Locale);3233  return (34    <>35      <section className="relative overflow-hidden border-b border-line">36        <div className="grid-backdrop absolute inset-0" aria-hidden="true" />37        <Container className="relative py-20 sm:py-28">38          <SectionHeading as="h1" title={security.title} lead={security.lead} />39        </Container>40      </section>4142      <section className="py-16 sm:py-20">43        <Container>44          <ul className="grid gap-4 sm:grid-cols-2">45            {security.items.map((item) => (46              <li47                key={item.title}48                className="rounded-2xl border border-line bg-card p-7 shadow-sm"49              >50                <div className="flex items-start gap-4">51                  <span52                    aria-hidden="true"53                    className="mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-xl bg-accent-soft"54                  >55                    <svg width="16" height="16" viewBox="0 0 16 16" fill="none">56                      <path57                        d="M8 1.5l5 2v4c0 3.2-2.1 5.6-5 7-2.9-1.4-5-3.8-5-7v-4l5-2z"58                        stroke="#0b6b4a"59                        strokeWidth="1.5"60                        strokeLinejoin="round"61                      />62                    </svg>63                  </span>64                  <div>65                    <h2 className="text-base font-semibold text-ink">{item.title}</h2>66                    <p className="mt-2 text-sm leading-relaxed text-ink-faint">{item.body}</p>67                  </div>68                </div>69              </li>70            ))}71          </ul>72          <p className="mx-auto mt-14 max-w-3xl border-l-2 border-accent pl-6 font-display text-xl leading-relaxed text-ink">73            {security.closing}74          </p>75        </Container>76      </section>77    </>78  );79}80